home *** CD-ROM | disk | FTP | other *** search
-
- /*
- * (a) (C) 1990 by Adobe Systems Incorporated. All rights reserved.
- *
- * (b) If this Sample Code is distributed as part of the Display PostScript
- * System Software Development Kit from Adobe Systems Incorporated,
- * then this copy is designated as Development Software and its use is
- * subject to the terms of the License Agreement attached to such Kit.
- *
- * (c) If this Sample Code is distributed independently, then the following
- * terms apply:
- *
- * (d) This file may be freely copied and redistributed as long as:
- * 1) Parts (a), (d), (e) and (f) continue to be included in the file,
- * 2) If the file has been modified in any way, a notice of such
- * modification is conspicuously indicated.
- *
- * (e) PostScript, Display PostScript, and Adobe are registered trademarks of
- * Adobe Systems Incorporated.
- *
- * (f) THE INFORMATION BELOW IS FURNISHED AS IS, IS SUBJECT TO
- * CHANGE WITHOUT NOTICE, AND SHOULD NOT BE CONSTRUED
- * AS A COMMITMENT BY ADOBE SYSTEMS INCORPORATED.
- * ADOBE SYSTEMS INCORPORATED ASSUMES NO RESPONSIBILITY
- * OR LIABILITY FOR ANY ERRORS OR INACCURACIES, MAKES NO
- * WARRANTY OF ANY KIND (EXPRESS, IMPLIED OR STATUTORY)
- * WITH RESPECT TO THIS INFORMATION, AND EXPRESSLY
- * DISCLAIMS ANY AND ALL WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR PARTICULAR PURPOSES AND NONINFRINGEMENT
- * OF THIRD PARTY RIGHTS.
- */
-
- /*
- * ImportApp.m
- *
- * This class performs some of the global functions necessary to
- * manage the application.
- *
- * Several application wide resources are retained as
- * instance variables. Examples are the hitPoint and
- * upathBuffer buffers, the hitSetting value and the
- * epsfContext.
- *
- * The epsfContext is a separate context that is
- * used solely for imaging included epsf files. It
- * prevents any errors in the epsf files from harming
- * the application's context. If errors occur when imaging
- * an epsf file, the context is destroyed and a new one
- * created. (See the context setting methods in this file
- * as well as in GraphicEpsf.m for specific details on
- * how to switch the contexts.)
- *
- * Version: 2.0
- * Author: Ken Fromm
- * History:
- * 03-07-91 Added this comment.
- */
-
- #import "ImportApp.h"
- #import "Document.h"
- #import "SaveAsPanel.h"
-
- #import "DrawingViewWraps.h"
-
- #import <appkit/Matrix.h>
- #import <appkit/NXCursor.h>
- #import <appkit/NXImage.h>
- #import <appkit/Window.h>
- #import <appkit/defaults.h>
- #import <appkit/nextstd.h>
-
- char ControlFont[ ] = "ControlPointsFont";
-
- @implementation ImportApp
-
- + new
- {
- self = [super new];
-
- [self setAutoupdate:YES];
- [self initializeSelf];
-
- return self;
- }
-
- - free
- {
- if (upathBuffer.pts)
- NX_FREE(upathBuffer.pts);
- if (upathBuffer.ops)
- NX_FREE(upathBuffer.ops);
- if (hitPoint.pts)
- NX_FREE(hitPoint.pts);
- if (hitPoint.ops)
- NX_FREE(hitPoint.ops);
-
- return [super free];
- }
-
- /*
- * Allocate a buffer for use by any drawing view to send
- * data to the PostScript server.
- *
- * Allocate another buffer for use by any drawing view to
- * use as the hitdetection userpath. Initialize the description
- * since most of the components will remain the same.
- */
- - initializeSelf
- {
- int i;
-
- contextFlag = YES;
-
- PSWDefineFont(ControlFont);
-
- NX_MALLOC(upathBuffer.pts, float, PTS_BUFFER);
- NX_MALLOC(upathBuffer.ops, char, OPS_BUFFER);
-
- NX_MALLOC(hitPoint.pts, float, PTS_HITPOINT);
- NX_MALLOC(hitPoint.ops, char, OPS_HITPOINT);
-
- for (i = 0; i < PTS_HITPOINT; i++)
- hitPoint.pts[i] = 0;
- hitPoint.num_pts = i;
-
- i = 0;
- hitPoint.ops[i++] = dps_setbbox;
- hitPoint.ops[i++] = dps_moveto;
- hitPoint.ops[i++] = dps_rlineto;
- hitPoint.ops[i++] = dps_rlineto;
- hitPoint.ops[i++] = dps_rlineto;
- hitPoint.ops[i++] = dps_closepath;
- hitPoint.num_ops = i;
-
- return self;
- }
-
- - setSaveAccessory:anObject
- {
- id savepanel;
-
- savepanel = [SaveAsPanel new];
-
- [savepanel setAccessoryView:anObject];
- [savepanel setSaveTo];
-
- return self;
- }
-
- - setContextFlag:sender
- {
- if (!contextFlag)
- [[sender selectedCell] setTitle:"Separate Context On"];
- else
- [[sender selectedCell] setTitle:"Separate Context Off"];
-
- contextFlag = !contextFlag;
-
- return self;
- }
-
- - (BOOL) contextFlag
- {
- return contextFlag;
- }
-
- - setShowEpsfFlag:sender
- {
- if (!showEpsfFlag)
- [[sender selectedCell] setTitle:"Show Epsf On"];
- else
- [[sender selectedCell] setTitle:"Show Epsf Off"];
-
- showEpsfFlag = !showEpsfFlag;
-
- return self;
- }
-
- - (BOOL) showEpsfFlag
- {
- return showEpsfFlag;
- }
-
- - setTracingFlag:sender
- {
- if (!tracingFlag)
- [[sender selectedCell] setTitle:"Trace On"];
- else
- [[sender selectedCell] setTitle:"Trace Off"];
-
- tracingFlag = !tracingFlag;
-
- return self;
- }
-
- - (BOOL) tracingFlag
- {
- return tracingFlag;
- }
-
- - (UPath *) hitPoint;
- {
- return &hitPoint;
- }
-
- - (UPath *) upathBuffer;
- {
- return &upathBuffer;
- }
-
- - resourcePanel
- {
- if (!resourcePanel)
- [NXApp loadNibSection:"ResourcePanel.nib" owner:self withNames:NO];
-
- return resourcePanel;
- }
-
- - cursor
- {
- id imageId, cursorId;
-
- NXPoint spot;
-
- if (operation == OP_IMPORT)
- {
- if (!importId)
- {
- imageId = [NXImage newFromSection:"cursorImport.tiff"];
- importId = [NXCursor newFromImage:imageId];
- spot.x = 2.0; spot.y = 1.0;
- [importId setHotSpot:&spot];
- }
- cursorId = importId;
- }
- else
- cursorId = NXArrow;
-
- return cursorId;
- }
-
- - setOperation:(int) op
- {
- operation = op;
- [[documentId window] invalidateCursorRectsForView:[[documentId window] contentView]];
-
- return self;
- }
-
- - (int) operation
- {
- return operation;
- }
-
- /*
- * Application delegate methods.
- */
- - appDidInit:sender
- {
- documentId = [Document new];
-
- return self;
- }
-
- @end
-
-